package com.br.negocio.controller;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.br.negocio.dao.ContaReceberDAO;
import com.br.negocio.vo.ContaReceberVO;

@Service("controllerContaReceber")
public class ControllerContaReceber {

	@Resource
	private ContaReceberDAO contareceberDAO;
	
	public void atualizarContaReceber(ContaReceberVO contareceberVO) {
		
		if (contareceberVO == null) {
			throw new IllegalArgumentException("Um contareceber valido e obrigatorio.");
		}
		
		if ((!contareceberDAO.validaDuplicado(contareceberVO)) &&
			(contareceberVO.getCodigo() == 0)) {
			throw new IllegalArgumentException("Este contareceber ja existe.");
		}

		if (contareceberVO.getCodigo() == 0) {
			contareceberVO.setDataCriacao(new Date());
			contareceberVO.setDataAlteracao(new Date());
			contareceberDAO.inserirContaReceber(contareceberVO);
		} else {
			contareceberVO.setDataAlteracao(new Date());
			contareceberDAO.atualizarContaReceber(contareceberVO);
		}
	}
	
	public void removerOrcamento(ContaReceberVO contareceberVO) {
		
		if (contareceberVO == null) {
			throw new IllegalArgumentException("Uma contareceber valida e obrigatorio.");
		}
		
		if (contareceberVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + contareceberVO.getCodigo());
		}
		
		contareceberDAO.inserirContaReceber(contareceberVO);
	}

	public void removerContaReceber(ContaReceberVO contareceberVO) {
		
		if (contareceberVO == null) {
			throw new IllegalArgumentException("Uma contareceber valida é obrigatório.");
		}
		
		if (contareceberVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + contareceberVO.getCodigo());
		}
		
		contareceberDAO.removerContaReceber(contareceberVO);
	}

	public ContaReceberVO obterContaReceber(ContaReceberVO contareceberVO) {
		
		if (contareceberVO == null) {
			throw new IllegalArgumentException("Um contareceber valida é obrigatório.");
		}

		return contareceberDAO.obterContaReceber(contareceberVO);
	}
	
	public ContaReceberVO obterServico(ContaReceberVO contareceberVO) {
		
		if (contareceberVO == null) {
			throw new IllegalArgumentException("Uma contareceber valida é necessario.");
		}

		return contareceberDAO.obterContaReceber(contareceberVO);
	}
	
	
	
	

	public List<ContaReceberVO> obterListaContaReceber() {
		return contareceberDAO.obterListaContaReceber();
	}
	
}